From 097c62e7ad48ea5a0ee14baecd51619212941e53 Mon Sep 17 00:00:00 2001 From: Alex Williamson Date: Wed, 11 Apr 2007 23:15:30 -0600 Subject: [PATCH] [IA64] Fix PV-on-HVM driver xen-platform-pci fails to load w/ undefined symbols for some of the sched_op hypercalls in machine_reboot.c. This adds them to xencomm mini to allow them to be called from modules. Signed-off-by: Alex Williamson --- .../arch/ia64/xen/xcom_mini.c | 36 +++++++++++++++++++ .../include/asm-ia64/hypervisor.h | 2 +- 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/linux-2.6-xen-sparse/arch/ia64/xen/xcom_mini.c b/linux-2.6-xen-sparse/arch/ia64/xen/xcom_mini.c index c78f15355d..dd45ce943c 100644 --- a/linux-2.6-xen-sparse/arch/ia64/xen/xcom_mini.c +++ b/linux-2.6-xen-sparse/arch/ia64/xen/xcom_mini.c @@ -418,3 +418,39 @@ xencomm_mini_hypercall_perfmon_op(unsigned long cmd, void* arg, return xencomm_arch_hypercall_perfmon_op(cmd, desc, count); } EXPORT_SYMBOL_GPL(xencomm_mini_hypercall_perfmon_op); + +int +xencomm_mini_hypercall_sched_op(int cmd, void *arg) +{ + int rc, nbr_area = 2; + struct xencomm_mini xc_area[2]; + struct xencomm_handle *desc; + unsigned int argsize; + + switch (cmd) { + case SCHEDOP_yield: + case SCHEDOP_block: + argsize = 0; + break; + case SCHEDOP_shutdown: + argsize = sizeof(sched_shutdown_t); + break; + case SCHEDOP_poll: + argsize = sizeof(sched_poll_t); + break; + case SCHEDOP_remote_shutdown: + argsize = sizeof(sched_remote_shutdown_t); + break; + + default: + printk("%s: unknown sched op %d\n", __func__, cmd); + return -ENOSYS; + } + + rc = xencomm_create_mini(xc_area, &nbr_area, arg, argsize, &desc); + if (rc) + return rc; + + return xencomm_arch_hypercall_sched_op(cmd, desc); +} +EXPORT_SYMBOL_GPL(xencomm_mini_hypercall_sched_op); diff --git a/linux-2.6-xen-sparse/include/asm-ia64/hypervisor.h b/linux-2.6-xen-sparse/include/asm-ia64/hypervisor.h index e7f345b465..831ba86ae7 100644 --- a/linux-2.6-xen-sparse/include/asm-ia64/hypervisor.h +++ b/linux-2.6-xen-sparse/include/asm-ia64/hypervisor.h @@ -64,7 +64,6 @@ extern start_info_t *xen_start_info; void force_evtchn_callback(void); -#ifndef CONFIG_VMX_GUEST /* Turn jiffies into Xen system time. XXX Implement me. */ #define jiffies_to_st(j) 0 @@ -116,6 +115,7 @@ HYPERVISOR_poll( return rc; } +#ifndef CONFIG_VMX_GUEST // for drivers/xen/privcmd/privcmd.c #define machine_to_phys_mapping 0 struct vm_area_struct; -- 2.30.2